Oozie, Workflow Engine for Apache Hadoop
首先需要知道Oozie工作流引擎有哪些组件,及其作用:
Oozie v3:基于Bundle Engine服务,提供高级oozie抽象批处理一系列coordinator应用.用户可以start/stop/suspend/resume/rerun一系列coordinator jobs在bundle等级下得到更好更简单的操作控制.
Oozie v2:基于Coordinator Engine服务,基于时间或数据来触发运行工作流.可以持续运行工作流基于时间(e.g.每小时运行),和可用数据(e.g. 等待输入数据存在,来运行工作流).
Oozie v1:基于Workflow Engine的服务,运行指定Hadoop MR和Pig作业的工作流活动.
官方文档给了几个要学习的大纲:
分布式文件组成
快速启动
开发文档
活动拓展
Job状态和SLA监控
管理员文档
引擎文档
MiniOozie文档
Oozie用户Authentication文档
1. 分布式文件组成
解压‘tar.gz’文件:
- Readme, license, notice & Release log files.
- Oozie server: oozie-server 目录.
- 脚本: bin/ directory, client and server scripts.
- 二进制文件: lib/ directory, client JAR files.
- 配置: conf/ server configuration directory.
- 工程:
oozie-client-*.tar.gz : Client tools.
oozie.war : Oozie WAR file.
docs.zip : Documentation.
oozie-examples-*.tar.gz : Examples.
oozie-sharelib-*.tar.gz : Share libraries (with Streaming, Pig JARs).
2. 概述
Oozie是基于WF引擎来运行指定WF作业(MR、pig作业)的服务.是一个运行在servlet容器的JavaWeb应用,目的是在一个控制依赖(按顺序执行)的DAG中安排一系列活动(MR/pig).
Oozie WF使用hPDL定义语言(类似于JBOSS JBPM定义语言).WF活动启动远程系统的作业(i.e. Hadoop, Pig),在活动完成时,远程系统回调Oozie通知活动完成,然后Oozie处理WF中的下一个活动.WF包含控制流节点和活动节点.
WordCount Workflow Example
wordcount工作流图: ./img/DG_Overview.png
<workflow-app name='wordcount-wf' xmlns="uri:oozie:workflow:0.1">
<start to='wordcount'/>
<action name='wordcount'>
<map-reduce>
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>mapred.mapper.class</name>
<value>org.myorg.WordCount.Map</value>
</property>
<property>
<name>mapred.reducer.class</name>
<value>org.myorg.WordCount.Reduce</value>
</property>
<property>
<name>mapred.input.dir</name>
<value>${inputDir}</value>
</property>
<property>
<name>mapred.output.dir</name>
<value>${outputDir}</value>
</property>
</configuration>
</map-reduce>
<ok to='end'/>
<error to='end'/>
</action>
<kill name='kill'>
<message>Something went wrong: ${wf:errorCode('wordcount')}</message>
</kill/>
<end name='end'/>
</workflow-app>